#ifndef ARROWHEAD_H_
#define ARROWHEAD_H_

#include <cairomm-1.0/cairomm/cairomm.h>

class ArrowHead {

public:

	enum ArrowStyle {
		ARROW_LINE,
		ARROW_OPEN,
		ARROW_SOLID,
		ARROW_SOLID_FILLED,
		ARROW_DIAMOND,
		ARROW_DIAMOND_FILLED
	};

	ArrowHead();

	void calcVertexes(double start_x, double start_y, double end_x,
			double end_y, double& x1, double& y1, double& x2, double& y2);

	virtual void draw(Cairo::RefPtr<Cairo::Context> context_ref, double start_x,
			double start_y, double end_x, double end_y) = 0;

	virtual ~ArrowHead(){};

protected:
	double arrow_lenght_;
	double arrow_degrees_;

};

#endif /* ARROWHEAD_H_ */
